<?php

/**
 * 通知信息实体操作类
 * @note  实现了对了通知信息的基本增删改查工作
 * @class  TZXX
 * @file  TZXX.class.php
 * @author 赤菁风铃
 * @time  2014年04月10日 22:40:14
 * @database  SQLServer
 */

/**
 * Class _TZXX 通知信息数据操作类
 */
class _TZXX
{
    #region 自动生成代码
    #region 构造函数
    public function __construct($data = null){
        $this->TZXX_BH = date('YmdHis').guid(); //通知信息编号
        $this->YHXX_BH = ''; //用户信息编号
        $this->LMXX_BH = ''; //栏目信息编号
        $this->TZXSSX_BH = ''; //通知显示顺序编号
        $this->TZXX_BT = ''; //通知信息标题
        $this->TZXX_GJZ = ''; //通知信息关键字
        $this->TZXX_LX = ''; //通知信息类型
        $this->TZXX_RQ = date('Y-m-d'); //通知信息日期
        $this->TZXX_ZT = ''; //通知信息状态
        $this->TZXX_CLJ = ''; //通知信息超链接
        $this->TZXX_NR = ''; //通知信息内容
        $this->TZXX_SJC = date('Y-m-d H:i:s'); //通知信息时间戳
        $this->TZXX_IPC = get_ip(); //通知信息IP戳
        $this->TZXX_YHC = session('identity'); //通知信息用户戳
        if(!is_null($data))
        {
            if(array_key_exists('TZXX_BH',$data)) $this->TZXX_BH = $data["TZXX_BH"];
            if(array_key_exists('YHXX_BH',$data)) $this->YHXX_BH = $data["YHXX_BH"];
            if(array_key_exists('LMXX_BH',$data)) $this->LMXX_BH = $data["LMXX_BH"];
            if(array_key_exists('TZXSSX_BH',$data)) $this->TZXSSX_BH = $data["TZXSSX_BH"];
            if(array_key_exists('TZXX_BT',$data)) $this->TZXX_BT = $data["TZXX_BT"];
            if(array_key_exists('TZXX_GJZ',$data)) $this->TZXX_GJZ = $data["TZXX_GJZ"];
            if(array_key_exists('TZXX_LX',$data)) $this->TZXX_LX = $data["TZXX_LX"];
            if(array_key_exists('TZXX_RQ',$data)) $this->TZXX_RQ = $data["TZXX_RQ"];
            if(array_key_exists('TZXX_ZT',$data)) $this->TZXX_ZT = $data["TZXX_ZT"];
            if(array_key_exists('TZXX_CLJ',$data)) $this->TZXX_CLJ = $data["TZXX_CLJ"];
            if(array_key_exists('TZXX_NR',$data)) $this->TZXX_NR = $data["TZXX_NR"];
            if(array_key_exists('TZXX_SJC',$data)) $this->TZXX_SJC = $data["TZXX_SJC"];
            if(array_key_exists('TZXX_IPC',$data)) $this->TZXX_IPC = $data["TZXX_IPC"];
            if(array_key_exists('TZXX_YHC',$data)) $this->TZXX_YHC = $data["TZXX_YHC"];
        }
    }
    #endregion 构造函数
        
    #region 实体固有属性
    
    /**
     * 属性  通知信息编号
     * @name  TZXX_BH
     * @type  string
     */
    public $TZXX_BH;
    
    /**
     * 属性  用户信息编号
     * @name  YHXX_BH
     * @type  string
     */
    public $YHXX_BH;
    
    /**
     * 属性  栏目信息编号
     * @name  LMXX_BH
     * @type  string
     */
    public $LMXX_BH;
    
    /**
     * 属性  通知显示顺序编号
     * @name  TZXSSX_BH
     * @type  string
     */
    public $TZXSSX_BH;
    
    /**
     * 属性  通知信息标题
     * @name  TZXX_BT
     * @type  string
     */
    public $TZXX_BT;
    
    /**
     * 属性  通知信息关键字
     * @name  TZXX_GJZ
     * @type  string
     */
    public $TZXX_GJZ;
    
    /**
     * 属性  通知信息类型
     * @name  TZXX_LX
     * @type  string
     */
    public $TZXX_LX;
    
    /**
     * 属性  通知信息日期
     * @name  TZXX_RQ
     * @type  string
     */
    public $TZXX_RQ;
    
    /**
     * 属性  通知信息状态
     * @name  TZXX_ZT
     * @type  string
     */
    public $TZXX_ZT;
    
    /**
     * 属性  通知信息超链接
     * @name  TZXX_CLJ
     * @type  string
     * @note  如果类型为超链接，该属性起作用；
     */
    public $TZXX_CLJ;
    
    /**
     * 属性  通知信息内容
     * @name  TZXX_NR
     * @type  string
     * @note  如果类型为超文本，该属性起作用；
     */
    public $TZXX_NR;
    
    /**
     * 属性  通知信息时间戳
     * @name  TZXX_SJC
     * @type  string
     * @note  保存本条记录最终修改时间，格式为yyyy-MM-dd HH:mm:ss
     */
    public $TZXX_SJC;
    
    /**
     * 属性  通知信息IP戳
     * @name  TZXX_IPC
     * @type  string
     * @note  保存本条记录最终修改IP地址
     */
    public $TZXX_IPC;
    
    /**
     * 属性  通知信息用户戳
     * @name  TZXX_YHC
     * @type  string
     * @note  保存本条记录的用户编号
     */
    public $TZXX_YHC;
    #endregion 实体固有属性
        
    #region 获取外键实体函数
    
    /**
     * 外键实体：栏目信息(LMXX)
     * @name  getLMXX
     * @return  LMXX 获取LMXX外键实体对象
     */
    public function getLMXX()
    {
        //此处语句需要修改SchemaTools.UseParams工具函数
        $lmxx = new LMXX();
        $lmxx->fetch($this->LMXX_BH );
        return $lmxx;
    }
    
    /**
     * 外键实体：通知显示顺序(TZXSSX)
     * @name  getTZXSSX
     * @return  TZXSSX 获取TZXSSX外键实体对象
     *@note 控制同栏目内新闻的显示顺序，编号越小显示位置越靠前
     */
    public function getTZXSSX()
    {
        //此处语句需要修改SchemaTools.UseParams工具函数
        $tzxssx = new TZXSSX();
        $tzxssx->fetch($this->TZXSSX_BH );
        return $tzxssx;
    }
    
    /**
     * 外键实体：用户信息(YHXX)
     * @name  getYHXX
     * @return  YHXX 获取YHXX外键实体对象
     */
    public function getYHXX()
    {
        //此处语句需要修改SchemaTools.UseParams工具函数
        $yhxx = new YHXX();
        $yhxx->fetch($this->YHXX_BH );
        return $yhxx;
    }
    #endregion 获取外键实体函数    
    
    #region 校验数据
    /**
     * @note  在进行数据更新和数据插入之前,对对象的属性进行服务端验证
     * @return  string 返回空字符串表示通过验证，否则直接返回错误信息，多条错误用;（半角分号）分隔多条错误
     */
    public function validate()
    {
    
        $result = array();
            
        #region 通知信息编号验证   
        $flag=true;
        //编号最大长度为50
        if($flag && (count(unpack('C*',$this->TZXX_BH )) > 50)){ 
            $flag=false;
            array_push($result,'编号最大长度为50'); 
        }
        //编号必须填写
        if($flag && (is_null($this->TZXX_BH) || $this->TZXX_BH==='')){ 
            array_push($result,'编号必须填写'); 
        }
        #endregion 通知信息编号验证   
            
        #region 用户信息编号验证   
        $flag=true;
        //编号最大长度为50
        if($flag && (count(unpack('C*',$this->YHXX_BH )) > 50)){ 
            $flag=false;
            array_push($result,'编号最大长度为50'); 
        }
        //编号必须填写
        if($flag && (is_null($this->YHXX_BH) || $this->YHXX_BH==='')){ 
            array_push($result,'编号必须填写'); 
        }
        #endregion 用户信息编号验证   
            
        #region 栏目信息编号验证   
        $flag=true;
        //编号最大长度为50
        if($flag && (count(unpack('C*',$this->LMXX_BH )) > 50)){ 
            $flag=false;
            array_push($result,'编号最大长度为50'); 
        }
        //编号必须填写
        if($flag && (is_null($this->LMXX_BH) || $this->LMXX_BH==='')){ 
            array_push($result,'编号必须填写'); 
        }
        #endregion 栏目信息编号验证   
            
        #region 通知显示顺序编号验证   
        $flag=true;
        //编号最大长度为50
        if($flag && (count(unpack('C*',$this->TZXSSX_BH )) > 50)){ 
            $flag=false;
            array_push($result,'编号最大长度为50'); 
        }
        //编号必须填写
        if($flag && (is_null($this->TZXSSX_BH) || $this->TZXSSX_BH==='')){ 
            array_push($result,'编号必须填写'); 
        }
        #endregion 通知显示顺序编号验证   
            
        #region 通知信息标题验证   
        $flag=true;
        //标题最大长度为200
        if($flag && (count(unpack('C*',$this->TZXX_BT )) > 200)){ 
            $flag=false;
            array_push($result,'标题最大长度为200'); 
        }
        //标题必须填写
        if($flag && (is_null($this->TZXX_BT) || $this->TZXX_BT==='')){ 
            array_push($result,'标题必须填写'); 
        }
        #endregion 通知信息标题验证   
            
        #region 通知信息关键字验证   
        $flag=true;
        //关键字最大长度为200
        if($flag && (count(unpack('C*',$this->TZXX_GJZ )) > 200)){ 
            $flag=false;
            array_push($result,'关键字最大长度为200'); 
        }
        //关键字必须填写
        if($flag && (is_null($this->TZXX_GJZ) || $this->TZXX_GJZ==='')){ 
            array_push($result,'关键字必须填写'); 
        }
        #endregion 通知信息关键字验证   
            
        #region 通知信息类型验证   
        $flag=true;
        //类型最大长度为50
        if($flag && (count(unpack('C*',$this->TZXX_LX )) > 50)){ 
            $flag=false;
            array_push($result,'类型最大长度为50'); 
        }
        //类型必须填写
        if($flag && (is_null($this->TZXX_LX) || $this->TZXX_LX==='')){ 
            array_push($result,'类型必须填写'); 
        }
        #endregion 通知信息类型验证   
            
        #region 通知信息日期验证   
        $flag=true;
        //日期最大长度为50
        if($flag && (count(unpack('C*',$this->TZXX_RQ )) > 50)){ 
            $flag=false;
            array_push($result,'日期最大长度为50'); 
        }
        //日期必须填写
        if($flag && (is_null($this->TZXX_RQ) || $this->TZXX_RQ==='')){ 
            array_push($result,'日期必须填写'); 
        }
        #endregion 通知信息日期验证   
            
        #region 通知信息状态验证   
        $flag=true;
        //状态最大长度为50
        if($flag && (count(unpack('C*',$this->TZXX_ZT )) > 50)){ 
            $flag=false;
            array_push($result,'状态最大长度为50'); 
        }
        //状态必须填写
        if($flag && (is_null($this->TZXX_ZT) || $this->TZXX_ZT==='')){ 
            array_push($result,'状态必须填写'); 
        }
        #endregion 通知信息状态验证   
            
        #region 通知信息超链接验证   
        $flag=true;
        //超链接最大长度为500
        if($flag && (count(unpack('C*',$this->TZXX_CLJ )) > 500)){ 
            $flag=false;
            array_push($result,'超链接最大长度为500'); 
        }
        //超链接必须填写
        if($flag && (is_null($this->TZXX_CLJ) || $this->TZXX_CLJ==='')){ 
            array_push($result,'超链接必须填写'); 
        }
        #endregion 通知信息超链接验证   
            
        #region 通知信息时间戳验证   
        $flag=true;
        //时间戳最大长度为50
        if($flag && (count(unpack('C*',$this->TZXX_SJC )) > 50)){ 
            array_push($result,'时间戳最大长度为50'); 
        }
        #endregion 通知信息时间戳验证   
            
        #region 通知信息IP戳验证   
        $flag=true;
        //IP戳最大长度为50
        if($flag && (count(unpack('C*',$this->TZXX_IPC )) > 50)){ 
            array_push($result,'IP戳最大长度为50'); 
        }
        #endregion 通知信息IP戳验证   
            
        #region 通知信息用户戳验证   
        $flag=true;
        //用户戳最大长度为50
        if($flag && (count(unpack('C*',$this->TZXX_YHC )) > 50)){ 
            array_push($result,'用户戳最大长度为50'); 
        }
        #endregion 通知信息用户戳验证   
        return  implode("<br/>", $result);
    }
    #endregion 校验数据
    
    #region 插入数据
    /**
     * @note  插入数据
     * @return string 返回空字符串表示操作成功，其它情况返回的是错误提示信息
     */
    public function insert()
    {
        //数据校验
        $message = $this->validate();
        if (!empty($message)) {
            return $message;
        }
        
        //以下属性不允许用户直接操作
        $this->TZXX_SJC = date('Y-m-d H:i:s');
        $this->TZXX_IPC = get_ip();
        $this->TZXX_YHC = session('identity');
                
        //准备sql语句
        $sql = "INSERT INTO TZXX(
                        TZXX_BH
                        ,YHXX_BH
                        ,LMXX_BH
                        ,TZXSSX_BH
                        ,TZXX_BT
                        ,TZXX_GJZ
                        ,TZXX_LX
                        ,TZXX_RQ
                        ,TZXX_ZT
                        ,TZXX_CLJ
                        ,TZXX_NR
                        ,TZXX_SJC
                        ,TZXX_IPC
                        ,TZXX_YHC
                       )
                 VALUES(
                        :TZXX_BH
                        ,:YHXX_BH
                        ,:LMXX_BH
                        ,:TZXSSX_BH
                        ,:TZXX_BT
                        ,:TZXX_GJZ
                        ,:TZXX_LX
                        ,:TZXX_RQ
                        ,:TZXX_ZT
                        ,:TZXX_CLJ
                        ,:TZXX_NR
                        ,:TZXX_SJC
                        ,:TZXX_IPC
                        ,:TZXX_YHC
                       )";
        //创建pdo对象，并绑定执行参数               
        $pdo = new PDO(C("AUTO_GENERATOR_DB_DSN"), C("AUTO_GENERATOR_DB_USER"), C("AUTO_GENERATOR_DB_PWD"));       
        $stmt = $pdo->prepare($sql);
        //准备sql语句所需参数
        $stmt->bindParam(':TZXX_BH',$this->TZXX_BH); //通知信息编号
        $stmt->bindParam(':YHXX_BH',$this->YHXX_BH); //用户信息编号
        $stmt->bindParam(':LMXX_BH',$this->LMXX_BH); //栏目信息编号
        $stmt->bindParam(':TZXSSX_BH',$this->TZXSSX_BH); //通知显示顺序编号
        $stmt->bindParam(':TZXX_BT',$this->TZXX_BT); //通知信息标题
        $stmt->bindParam(':TZXX_GJZ',$this->TZXX_GJZ); //通知信息关键字
        $stmt->bindParam(':TZXX_LX',$this->TZXX_LX); //通知信息类型
        $stmt->bindParam(':TZXX_RQ',$this->TZXX_RQ); //通知信息日期
        $stmt->bindParam(':TZXX_ZT',$this->TZXX_ZT); //通知信息状态
        $stmt->bindParam(':TZXX_CLJ',$this->TZXX_CLJ); //通知信息超链接
        $stmt->bindParam(':TZXX_NR',$this->TZXX_NR); //通知信息内容  
        $stmt->bindParam(':TZXX_SJC',$this->TZXX_SJC); //通知信息时间戳
        $stmt->bindParam(':TZXX_IPC',$this->TZXX_IPC); //通知信息IP戳
        $stmt->bindParam(':TZXX_YHC',$this->TZXX_YHC); //通知信息用户戳
        $stmt->execute();
        if ($stmt->rowCount() === 1) {
            return "";
        }
        if (strpos($stmt->errorInfo()[2], "重复", 0)) {
            return "重复项添加失败";
        }
        if (strpos($stmt->errorInfo()[2], "截断", 0)) {
            return "数据超长";
        }
        return $stmt->errorInfo()[2];
    }
    #endregion 插入数据
    
    #region 更新数据
    /**
     * @note  更新数据
     * @param string $tzxx_bh_ora 拟更新的TZXX实体主键值，如果为空，表示更新当前实体.
     * @return string 返回空字符串表示操作成功，其它情况返回的是错误提示信息
     */ 
    public function update($tzxx_bh_ora = null )
    {
        //数据校验
        $message = $this->validate();
        if (!empty($message)) {
            return $message;
        }
        
        //用户操作记录,以下属性不允许用户直接操作
        $this->TZXX_SJC = date('Y-m-d H:i:s');
        $this->TZXX_IPC = get_ip();
        $this->TZXX_YHC = session('identity');
        
        //准备sql语句
        $sql = "UPDATE TZXX SET 
                    TZXX_BH=:TZXX_BH
                    ,YHXX_BH=:YHXX_BH
                    ,LMXX_BH=:LMXX_BH
                    ,TZXSSX_BH=:TZXSSX_BH
                    ,TZXX_BT=:TZXX_BT
                    ,TZXX_GJZ=:TZXX_GJZ
                    ,TZXX_LX=:TZXX_LX
                    ,TZXX_RQ=:TZXX_RQ
                    ,TZXX_ZT=:TZXX_ZT
                    ,TZXX_CLJ=:TZXX_CLJ
                    ,TZXX_NR=:TZXX_NR
                    ,TZXX_SJC=:TZXX_SJC
                    ,TZXX_IPC=:TZXX_IPC
                    ,TZXX_YHC=:TZXX_YHC
                WHERE
                    TZXX_BH=:TZXX_BH_ORA
                    ";
        
        //准备pdo对象
        $pdo = new PDO(C("AUTO_GENERATOR_DB_DSN"), C("AUTO_GENERATOR_DB_USER"), C("AUTO_GENERATOR_DB_PWD"));
        $stmt = $pdo->prepare($sql);
        //准备sql语句所需参数
        $stmt->bindParam(':TZXX_BH_ORA',empty($tzxx_bh_ora)?$this->TZXX_BH:$tzxx_bh_ora); //通知信息编号
        $stmt->bindParam(':TZXX_BH',$this->TZXX_BH); //通知信息编号
        $stmt->bindParam(':YHXX_BH',$this->YHXX_BH); //用户信息编号
        $stmt->bindParam(':LMXX_BH',$this->LMXX_BH); //栏目信息编号
        $stmt->bindParam(':TZXSSX_BH',$this->TZXSSX_BH); //通知显示顺序编号
        $stmt->bindParam(':TZXX_BT',$this->TZXX_BT); //通知信息标题
        $stmt->bindParam(':TZXX_GJZ',$this->TZXX_GJZ); //通知信息关键字
        $stmt->bindParam(':TZXX_LX',$this->TZXX_LX); //通知信息类型
        $stmt->bindParam(':TZXX_RQ',$this->TZXX_RQ); //通知信息日期
        $stmt->bindParam(':TZXX_ZT',$this->TZXX_ZT); //通知信息状态
        $stmt->bindParam(':TZXX_CLJ',$this->TZXX_CLJ); //通知信息超链接
        $stmt->bindParam(':TZXX_NR',$this->TZXX_NR); //通知信息内容  
        $stmt->bindParam(':TZXX_SJC',$this->TZXX_SJC); //通知信息时间戳
        $stmt->bindParam(':TZXX_IPC',$this->TZXX_IPC); //通知信息IP戳
        $stmt->bindParam(':TZXX_YHC',$this->TZXX_YHC); //通知信息用户戳
        $stmt->execute();
        if ($stmt->rowCount() === 1) {
            return "";
        }
        return $stmt->errorInfo()[2];
    }
    #endregion 更新数据
    
    #region 删除数据 
    /**
     * @note  根据主键信息删除TZXX对象
     * @param  string $tzxx_bh_ora 拟删除的TZXX实体主键值，如果为空，表示删除当前实体.
     * @return string 返回空字符串表示操作成功，其它情况返回的是错误提示信息
     */ 
    public function delete($tzxx_bh_ora = null )
    {
        
        //准备sql语句
        $sql = "Delete From TZXX where 
                    TZXX_BH=:TZXX_BH_ORA
                    ";
         //执行sql语句
        $pdo = new PDO(C("AUTO_GENERATOR_DB_DSN"), C("AUTO_GENERATOR_DB_USER"), C("AUTO_GENERATOR_DB_PWD"));
        $stmt = $pdo->prepare($sql);
        //准备sql语句所需参数
        if($tzxx_bh_ora==null){
            $tzxx_bh_ora=$this->TZXX_BH;
        }
        $stmt->bindParam(':TZXX_BH_ORA',empty($tzxx_bh_ora)?$this->TZXX_BH:$tzxx_bh_ora); //通知信息编号
        $stmt->execute();
        
        if ($stmt->rowCount() === 1) {
            return "";
        }
        //需要根据不同的数据库检查不同的返回值
        if (strpos($stmt->errorInfo()[2], "约束", 0)) {
            return "存在依赖的相关信息，不能进行删除";
        }
        return $stmt->errorInfo()[2];                    
    }
    #endregion 删除数据
    
    #region 获取单个对象 
    /**
     * @note  根据主键信息获取单个TZXX对象
     * @param  string $tzxx_bh_ora 拟获取的TZXX实体主键值，如果为空，表示按照当前实体的主键属性重新获取实体.
     * @return string 返回空字符串表示操作成功，其它情况返回的是错误提示信息
     */ 
    public function fetch($tzxx_bh_ora = null )
    {
        
        //准备sql语句所需参数
        $params[":TZXX_BH_ORA"] = is_null($tzxx_bh_ora) ? $this->TZXX_BH : $tzxx_bh_ora ; //通知信息_编号
        
        //准备sql语句
        $sql = "SELECT 
                    TZXX_BH
                    ,YHXX_BH
                    ,LMXX_BH
                    ,TZXSSX_BH
                    ,TZXX_BT
                    ,TZXX_GJZ
                    ,TZXX_LX
                    ,TZXX_RQ
                    ,TZXX_ZT
                    ,TZXX_CLJ
                    ,TZXX_NR
                    ,TZXX_SJC
                    ,TZXX_IPC
                    ,TZXX_YHC
                  FROM TZXX 
                  WHERE
                    TZXX_BH = :TZXX_BH_ORA
                ";
        
        //  执行sql语句
        $pdo = new PDO(C("AUTO_GENERATOR_DB_DSN"), C("AUTO_GENERATOR_DB_USER"), C("AUTO_GENERATOR_DB_PWD"));
        $stmt = $pdo->prepare($sql);
        $stmt->execute($params);
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        if ($result !== false) {
            $this->TZXX_BH = is_null($result["TZXX_BH"] ) ? '' : $result["TZXX_BH"];
            $this->YHXX_BH = is_null($result["YHXX_BH"] ) ? '' : $result["YHXX_BH"];
            $this->LMXX_BH = is_null($result["LMXX_BH"] ) ? '' : $result["LMXX_BH"];
            $this->TZXSSX_BH = is_null($result["TZXSSX_BH"] ) ? '' : $result["TZXSSX_BH"];
            $this->TZXX_BT = is_null($result["TZXX_BT"] ) ? '' : $result["TZXX_BT"];
            $this->TZXX_GJZ = is_null($result["TZXX_GJZ"] ) ? '' : $result["TZXX_GJZ"];
            $this->TZXX_LX = is_null($result["TZXX_LX"] ) ? '' : $result["TZXX_LX"];
            $this->TZXX_RQ = is_null($result["TZXX_RQ"] ) ? '' : $result["TZXX_RQ"];
            $this->TZXX_ZT = is_null($result["TZXX_ZT"] ) ? '' : $result["TZXX_ZT"];
            $this->TZXX_CLJ = is_null($result["TZXX_CLJ"] ) ? '' : $result["TZXX_CLJ"];
            if(is_resource($result['TZXX_NR'])){
                 $this->TZXX_NR=stream_get_contents($result['TZXX_NR']);
            }
            else{
                $this->TZXX_NR=$result['TZXX_NR'];
            }
            $this->TZXX_SJC = is_null($result["TZXX_SJC"] ) ? '' : $result["TZXX_SJC"];
            $this->TZXX_IPC = is_null($result["TZXX_IPC"] ) ? '' : $result["TZXX_IPC"];
            $this->TZXX_YHC = is_null($result["TZXX_YHC"] ) ? '' : $result["TZXX_YHC"];
            return "";
        } else {
            return "要获取的对象不存在";
        }
    }
    #endregion 获取单个对象 
    
    #region 尝试获取单个对象，并返回获取的对象
    /**
     * @note  尝试获取单个TZXX对象，并返回获取的对象
     * @param  string $tzxx_bh_ora 拟获取的TZXX实体主键值，如果为空，表示按照当前实体的主键属性重新获取实体.
     * @return TZXX 返回null表示操作失败，其它情况返回要获取的对象
     */
    public static function create($tzxx_bh_ora )
    {
        //准备sql语句所需参数
        $params[":TZXX_BH_ORA"] = $tzxx_bh_ora ; //通知信息_编号
        
        //准备sql语句
        $sql = "SELECT 
                    TZXX_BH
                    ,YHXX_BH
                    ,LMXX_BH
                    ,TZXSSX_BH
                    ,TZXX_BT
                    ,TZXX_GJZ
                    ,TZXX_LX
                    ,TZXX_RQ
                    ,TZXX_ZT
                    ,TZXX_CLJ
                    ,TZXX_NR
                    ,TZXX_SJC
                    ,TZXX_IPC
                    ,TZXX_YHC
                  FROM TZXX 
                  WHERE
                    TZXX_BH = :TZXX_BH_ORA
                ";
        
        //  执行sql语句
        $pdo = new PDO(C("AUTO_GENERATOR_DB_DSN"), C("AUTO_GENERATOR_DB_USER"), C("AUTO_GENERATOR_DB_PWD"));
        $stmt = $pdo->prepare($sql);
        $stmt->execute($params);
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        $tzxx = new TZXX();
        if ($result !== false) {
            $tzxx->TZXX_BH = is_null($result["TZXX_BH"] ) ? '' : $result["TZXX_BH"];
            $tzxx->YHXX_BH = is_null($result["YHXX_BH"] ) ? '' : $result["YHXX_BH"];
            $tzxx->LMXX_BH = is_null($result["LMXX_BH"] ) ? '' : $result["LMXX_BH"];
            $tzxx->TZXSSX_BH = is_null($result["TZXSSX_BH"] ) ? '' : $result["TZXSSX_BH"];
            $tzxx->TZXX_BT = is_null($result["TZXX_BT"] ) ? '' : $result["TZXX_BT"];
            $tzxx->TZXX_GJZ = is_null($result["TZXX_GJZ"] ) ? '' : $result["TZXX_GJZ"];
            $tzxx->TZXX_LX = is_null($result["TZXX_LX"] ) ? '' : $result["TZXX_LX"];
            $tzxx->TZXX_RQ = is_null($result["TZXX_RQ"] ) ? '' : $result["TZXX_RQ"];
            $tzxx->TZXX_ZT = is_null($result["TZXX_ZT"] ) ? '' : $result["TZXX_ZT"];
            $tzxx->TZXX_CLJ = is_null($result["TZXX_CLJ"] ) ? '' : $result["TZXX_CLJ"];
            if(is_resource($result['TZXX_NR'])){
                 $tzxx->TZXX_NR=stream_get_contents($result['TZXX_NR']);
            }
            else{
                $tzxx->TZXX_NR=$result['TZXX_NR'];
            }
            $tzxx->TZXX_SJC = is_null($result["TZXX_SJC"] ) ? '' : $result["TZXX_SJC"];
            $tzxx->TZXX_IPC = is_null($result["TZXX_IPC"] ) ? '' : $result["TZXX_IPC"];
            $tzxx->TZXX_YHC = is_null($result["TZXX_YHC"] ) ? '' : $result["TZXX_YHC"];
            return $tzxx;
        } else {
            return null;
        }
    }
    #endregion 根据主键创建对象（如果存在记录自动进行填充）
    
    #region 获取一组TZXX信息对象
    /**
     * @note 获取一组用户信息信息对象.
     * @param array $param 参数数组
     * @param int $pageSize 分页尺寸
     * @param int $pageIndex 当前页
     * @param string $orderby 排序语句（需要包括 order by ）
     * @param string $sql 用户自定义使用的SQL语句
     * @return array 带分页信息的对象数组
     */
    public static function query($param = array() , $pageSize = 0 , $pageIndex = 1 , $orderby="" , $sql= "")
    {
    
        #region 声明和处理常用变量
        
        //生成返回值变量
        $result = array();
               
        //处理sql语句默认值
        if(empty($sql)){
            $sql ="select TZXX.* from TZXX ";
        }
        
        //自动过滤掉返回结果集中的超文本字段
        $sqlreplace ='
                    TZXX.TZXX_BH
                    ,TZXX.YHXX_BH
                    ,TZXX.LMXX_BH
                    ,TZXX.TZXSSX_BH
                    ,TZXX.TZXX_BT
                    ,TZXX.TZXX_GJZ
                    ,TZXX.TZXX_LX
                    ,TZXX.TZXX_RQ
                    ,TZXX.TZXX_ZT
                    ,TZXX.TZXX_CLJ
                    ,TZXX.TZXX_SJC
                    ,TZXX.TZXX_IPC
                    ,TZXX.TZXX_YHC
                     ';
        $sql = str_replace( 'TZXX.*', $sqlreplace , $sql);
        
        //处理传入的参数
        $params = array();
        foreach ($param as $key => $value) {
            if($value == null || $value == ""){
                continue;
            }
            $params[":" . strtoupper(str_replace(":", "", $key))] = $value;
        }
    
        //排序条件
        if (empty($orderby))
        {
            $orderby = "order by TZXX.TZXX_BH";
        }
                
        $where = " WHERE 1 = 1 ";
        
        // TZXX表的模糊查询条件
        if (array_key_exists(':MHCX',$params) )
        {
            $where.=" and (TZXX.TZXX_BT + '_' + TZXX.TZXX_GJZ) like '%' + :MHCX + '%' ";
        }
        
        // YHXX_BH精确查询条件
        if (array_key_exists(':YHXX_BH',$params) )
        {
            $where.=" and TZXX.YHXX_BH = :YHXX_BH ";
        }
        
        // LMXX_BH精确查询条件
        if (array_key_exists(':LMXX_BH',$params) )
        {
            $where.=" and TZXX.LMXX_BH = :LMXX_BH ";
        }
        
        // TZXSSX_BH精确查询条件
        if (array_key_exists(':TZXSSX_BH',$params) )
        {
            $where.=" and TZXX.TZXSSX_BH = :TZXSSX_BH ";
        }
        
        // TZXX_ZT精确查询条件
        if (array_key_exists(':TZXX_ZT',$params) )
        {
            $where.=" and TZXX.TZXX_ZT = :TZXX_ZT ";
        }
        
        // TZXX_RQ区段查询(前空后不空)
        if (!array_key_exists(':TZXX_RQBEGIN',$params) && array_key_exists(':TZXX_RQEND',$params) )
        {
            $where.="and TZXX.TZXX_RQ = :TZXX_RQEND ";
        }
        
        // TZXX_RQ区段查询(前不空后空)
        if (array_key_exists(':TZXX_RQBEGIN',$params) && !array_key_exists(':TZXX_RQEND',$params) )
        {
            $where.="and TZXX.TZXX_RQ = :TZXX_RQBEGIN ";
        }
        
        // TZXX_RQ区段查询(前大于后)
        if (array_key_exists(':TZXX_RQBEGIN',$params) && array_key_exists(':TZXX_RQEND',$params) && strcmp($params[':TZXX_RQBEGIN'], $params[':TZXX_RQEND']) >0  )
        {
            $where.="and ( TZXX.TZXX_RQ <= :TZXX_RQBEGIN and TZXX.TZXX_RQ >= :TZXX_RQEND )";
        }
        
        // TZXX_RQ区段查询(前小于后)
        if (array_key_exists(':TZXX_RQBEGIN',$params) && array_key_exists(':TZXX_RQEND',$params) && strcmp($params[':TZXX_RQBEGIN'], $params[':TZXX_RQEND']) <0  )
        {
            $where.="and ( TZXX.TZXX_RQ >= :TZXX_RQBEGIN and TZXX.TZXX_RQ <= :TZXX_RQEND )";
        }
        
        // TZXX_RQ区段查询(前后相同)
        if (array_key_exists(':TZXX_RQBEGIN',$params) && array_key_exists(':TZXX_RQEND',$params) && strcmp($params[':TZXX_RQBEGIN'], $params[':TZXX_RQEND']) == 0  )
        {
            $where.="and (TZXX.TZXX_RQ = :TZXX_RQBEGIN and TZXX.TZXX_RQ = :TZXX_RQEND)";
        }
        #endregion 声明和处理常用变量
        
        #region 获取记录总数和分页相关信息
        
        $pdo = new PDO(C("AUTO_GENERATOR_DB_DSN"), C("AUTO_GENERATOR_DB_USER"), C("AUTO_GENERATOR_DB_PWD"));
        $stmt = $pdo->prepare("select count(*) from ($sql $where) TTT");
        $stmt->execute($params);
        $result['TotalCount'] = intval($stmt->fetch()[0]);

        if($pageSize === 0){
            $result['TotalPages'] = 1;
            $result['PageIndex'] = 1;
            $result['PageSize'] = $result[0];
            $beginRow= 1;
            $endRow = $result['TotalCount'];    
        }
        else{
            $result['PageSize'] = $pageSize;
            $result['TotalPages'] = intval((($result['TotalCount'] - 1) / $result['PageSize'])) + 1;
            $result['PageIndex'] = min(max(1,$pageIndex), $result['TotalPages']);
            $beginRow = ($result['PageIndex'] - 1) * $result['PageSize'] + 1;
            $endRow = $result['PageIndex'] * $result['PageSize'];
        }
        $result['HasPreviousPage'] = $result['PageIndex'] > 1;
        $result['HasNextPage'] = $result['PageIndex'] < $result['TotalPages'];
        $result['IsFirstPage'] = $result['PageIndex'] == 1;
        $result['IsLastPage'] = $result['PageIndex'] == $result['TotalPages'];
        $result['BoolPage'] = $pageSize == 0;
        #endregion 获取记录总数和分页相关信息
        
        #region 查询数据库并返回结果
        $result['DataList'] = array();
        //SQLServer获取结果集
        $sql="SELECT ROW_NUMBER() over($orderby) as rownumber ,".substr($sql,6);
        $sql = "SELECT * FROM ( 
                        $sql $where
                    ) as TTT where rownumber between $beginRow and $endRow ";
        $stmt = $pdo->prepare($sql);
        $stmt->execute($params);
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            $temp=new TZXX();
            foreach($row as $key=>$value){
                $temp->$key = $value;
            }
            array_push($result['DataList'],$temp);
        }
        return $result;
        #endregion 查询数据库并返回结果
    }
    #endregion 获取TZXX信息对象DataResponse
    
    #region 获取TZXX子表表名数组
    /**
     * @note 返回子表表名数组.
     * @return array 子表表名数组
     */
    public static function subtables()
    {
        //生成返回值变量
        $result = array();
        
        
        return $result;
    }
    #endregion 获取TZXX子表表名数组
    #endregion 自动生成代码
   
    #endregion 扩展属性

}
